জাভাস্ক্রিপ্ট অবজেক্ট রেফারেন্স(JS Object Reference)

Web Development - জাভাস্ক্রিপ্ট (JavaScript) জাভাস্ক্রিপ্ট অবজেক্ট (JS Object) |
275
275

জাভাস্ক্রিপ্টে অবজেক্ট রেফারেন্স হলো এমন একটি ধারণা, যেখানে এক অবজেক্টের পংক্তি বা মানকে আরেকটি ভেরিয়েবলে ধারণ করা হয়, কিন্তু মূল অবজেক্টের কপি তৈরি হয় না। এর পরিবর্তে, একাধিক ভেরিয়েবল একে অপরকে রেফারেন্স করে থাকে একই অবজেক্টকে। অর্থাৎ, আপনি যখন একটি অবজেক্ট এক ভেরিয়েবলে সংরক্ষণ করেন এবং তারপর আরেকটি ভেরিয়েবলে সেটি অ্যাসাইন করেন, তখন এই দুটি ভেরিয়েবল একই অবজেক্টের রেফারেন্স শেয়ার করে।

এটি একটি প্রাইমিটিভ ভ্যালু (primitive value) থেকে আলাদা, কারণ প্রাইমিটিভ ভ্যালু গুলো সরাসরি ভেরিয়েবলের মধ্যে সংরক্ষিত হয়, কিন্তু অবজেক্টের ক্ষেত্রে এটি রেফারেন্স বা পয়েন্টার হিসেবে কাজ করে।


অবজেক্ট রেফারেন্সের উদাহরণ

উদাহরণ: এক অবজেক্টের রেফারেন্স শেয়ার করা

let person1 = { name: "Alice", age: 25 };
let person2 = person1;  // person1-এর রেফারেন্স person2-এ অ্যাসাইন করা

console.log(person1 === person2);  // আউটপুট: true

এখানে, person2 আসলে person1 এর রেফারেন্স শেয়ার করছে, তাই person1 এবং person2 একই অবজেক্টকে রেফারেন্স করছে। এর ফলে, person1 বা person2 এ কোনো পরিবর্তন করলে তা অন্যটিতে প্রভাব ফেলবে।

উদাহরণ: অবজেক্টে পরিবর্তন করা

let person1 = { name: "Alice", age: 25 };
let person2 = person1;  // person1-এর রেফারেন্স person2-এ অ্যাসাইন করা

person2.age = 30;  // person2 এর age পরিবর্তন করা

console.log(person1.age);  // আউটপুট: 30, কারণ person1 এবং person2 একই অবজেক্ট রেফারেন্স করছে

এখানে, person2 এর age পরিবর্তন করলে person1 এর ageও পরিবর্তিত হয়, কারণ উভয় ভেরিয়েবল একই অবজেক্টকে রেফারেন্স করছে।


অবজেক্ট রেফারেন্সের সাথে ডিপ কপি এবং শ্যালো কপি

শ্যালো কপি এবং ডিপ কপি দুটি পদ্ধতি, যেগুলি অবজেক্টের কপি তৈরি করার সময় ব্যবহৃত হয়:

  • শ্যালো কপি: এটি মূল অবজেক্টের রেফারেন্স কপি করে। যদি মূল অবজেক্টের কোনো প্যারামিটার পরিবর্তন করা হয়, তবে কপি হওয়া অবজেক্টও পরিবর্তিত হবে।
  • ডিপ কপি: এটি মূল অবজেক্টের সম্পূর্ণ কপি তৈরি করে, যাতে মূল অবজেক্টের কোনো পরিবর্তন অন্য কপির ওপর প্রভাব ফেলবে না।

উদাহরণ: শ্যালো কপি

let person1 = { name: "Alice", age: 25 };
let person2 = person1;  // শ্যালো কপি, রেফারেন্স কপি হচ্ছে

person2.age = 30;
console.log(person1.age);  // আউটপুট: 30, কারণ এটি একই রেফারেন্স

উদাহরণ: ডিপ কপি

let person1 = { name: "Alice", age: 25 };
let person2 = JSON.parse(JSON.stringify(person1));  // ডিপ কপি

person2.age = 30;
console.log(person1.age);  // আউটপুট: 25, কারণ এটি আলাদা কপি

এখানে, JSON.parse(JSON.stringify()) ব্যবহার করে ডিপ কপি তৈরি করা হয়েছে, যা মূল অবজেক্টের কোনো পরিবর্তন কপির ওপর প্রভাব ফেলতে দেয় না।


অবজেক্ট রেফারেন্স এবং প্রাইমিটিভ ডেটা টাইপের পার্থক্য

প্রাইমিটিভ ডেটা টাইপ যেমন স্ট্রিং, নম্বর, বুলিয়ান, সিম্বল, null বা undefined এর ক্ষেত্রে ভেরিয়েবলগুলো সরাসরি মান ধারণ করে, তাই কপি করার সময় নতুন ভেরিয়েবলটি মূল ভেরিয়েবলের মানের কপি পায়।

অন্যদিকে, অবজেক্ট এবং অ্যারে (যারা রেফারেন্স টাইপ) কপি করার সময় নতুন ভেরিয়েবলটি পুরনো ভেরিয়েবলের রেফারেন্স কপি করে।

উদাহরণ: প্রাইমিটিভ ডেটা টাইপ

let num1 = 10;
let num2 = num1;  // কপি হচ্ছে প্রাইমিটিভ ভ্যালু

num2 = 20;
console.log(num1);  // আউটপুট: 10, কারণ এটি আলাদা ভ্যালু কপি হয়েছে

সারাংশ

অবজেক্ট রেফারেন্স জাভাস্ক্রিপ্টের একটি গুরুত্বপূর্ণ ধারণা, যেখানে একটি ভেরিয়েবল অন্য ভেরিয়েবলের রেফারেন্স শেয়ার করে। এই কারণে, এক ভেরিয়েবল দিয়ে কোনো অবজেক্ট পরিবর্তন করলে অন্য ভেরিয়েবলও পরিবর্তিত হয়। অবজেক্টের সাথে কাজ করার সময় এটি শ্যালো কপি বা ডিপ কপি কৌশল ব্যবহার করার ক্ষেত্রে গুরুত্বপূর্ণ হয়ে ওঠে, কারণ শ্যালো কপি রেফারেন্স কপি করে, যা দুই ভেরিয়েবলকে একই অবজেক্টের রেফারেন্সে আবদ্ধ করে।

common.content_added_by
টপ রেটেড অ্যাপ

স্যাট অ্যাকাডেমী অ্যাপ

আমাদের অল-ইন-ওয়ান মোবাইল অ্যাপের মাধ্যমে সীমাহীন শেখার সুযোগ উপভোগ করুন।

ভিডিও
লাইভ ক্লাস
এক্সাম
ডাউনলোড করুন
Promotion